package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class SortString {
    public static void main(String[] args) {
        List<String>list = new ArrayList<>();
        list.add("王克晶");
        list.add("传奇sdj");
        list.add("国斌老师");
        System.out.println("list原始数据："+list);

        Collections.sort(list, new Comparator<String>() {
            /*
              compare()方法用于定义o1和o2比较大小的规则，并且返回值表达大小关系
              返回值实现的要求：------不用纠结，记住下面的结论即可
              1)如果返回值>0，则表达的是o1>o2
              2)如果返回值<0，则表达的是o1<o2
              3)如果返回值=0，则表达的是o1=o2
              结论：
              1)前面的-后面的-------升序
              2)后面的-前面的-------降序
             */
            public int compare(String o1, String o2) {
                return o1.length()-o2.length();//按升序排序

            }
        });
        System.out.println("list排序后数据:"+list);
        Collections.sort(list, new Comparator<String>() {
            public int compare(String o1, String o2) {
                return o2.length()-o1.length();//按降序排序;
            }
        });

        Collections.sort(list,(o1,o2)->o2.length()-o1.length());
        System.out.println("list排序后数据:"+list);

        /*
        List<String>list = new ArrayList<>();
        list.add("jack");
        list.add("rose");
        list.add("tom");
        list.add("jerry");
        list.add("black");
        list.add("Kobe");
        System.out.println("list原始数据:"+list);
        //对英文字符进行排序时，惠安字母的ASCII码来排
        //若首字母相同，则比较第2个字母的ASCII码，以此类推
        Collections.sort(list);
        System.out.println("list排序后数据:"+list);

         */
    }
}
